/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ihmprojet.core.historique;

/**
 *
 * @author Rémi PIOTAIX <remi.piotaix@gmail.com>
 */
public interface ActionInterface {

    public enum ActionState {

        EXECUTED, REVERSED, INITIALIZED, CREATED
    }

    /**
     * Execute l'action si possible
     */
    public void execute();

    /**
     * Annule l'action si possible et si l'action a déja été executée
     */
    public void reverse();

    /**
     *
     * @return Courte description de l'action
     */
    public String getNom();

    /**
     *
     * @return true si l'action peut être annulée
     */
    public boolean canReverse();

    /**
     *
     * @return true si l'action peut être executee
     */
    public boolean canExecute();

    /**
     *
     * @return l'état actuel de l'action
     */
    public ActionState getState();
}
